package week7.hotel;
/**
 * Hotelkamer, met nummer en (eventuele) huurder.
 * Practicumopgave Programmeren I
  * @author W.Looge & R. Oost
  * @version 1.0
  */
public class Kamer {
    // ------------------ Instantievariabelen ----------------

    private int nummer;
    private Gast gast;
    private Kluis kluis;

    // ------------------ Constructoren ------------------------

    /**
     * Construeert <code>Kamer</code> met gegeven nummer, zonder huurder.
     * @param nr nummer van de nieuwe <code>Kamer</code>
     */
    public Kamer(int nr) {
        this(nr, new Kluis());
    }

    /**
     * Construeert <code>Kamer</code> met gegeven nummer, zonder huurder, gebruikt de parameter kluis
     * als Kluis voor deze kamer.
     * @param nr nummer van de nieuwe <code>Kamer</code>
     * @param kluis De Kluis die deze Kamer moet gebruiken
     */
    public Kamer(int nr, Kluis kluis) {
        nummer = nr;
        this.kluis = kluis;
    }
    
    // ------------------ Aanvragen --------------------------

    /**
     * Levert nummer van deze <code>Kamer</code> op.
     */
    public int getNummer() {
        return nummer;
    }

    /**
     * Levert huidige huurder van deze <code>Kamer</code> op.
     * @return huurder van deze <code>Kamer</code>;
     *         <code>null</code> indien deze <code>Kamer</code> 
     *         geen huurder heeft
     */
    public Gast getGast() {
        return gast;
    }
    
    /**
     * Levert huidige kluis van deze <code>Kamer</code> op.
     * @return Kluis van deze <code>Kamer</code>;
     *         <code>null</code> indien deze <code>Kamer</code> 
     *         geen Kluis heeft
     */
    public Kluis getKluis() {
        return kluis;
    }

    // ------------------ Commando's --------------------------

    /**
     * Wijst een <code>Gast</code> aan deze <code>Kamer</code> toe.
     * @param g toekomstige huurder van deze <code>Kamer</code>;
     *        indien <code>null</code> dan is naderhand 
     *        deze <code>Kamer</code> vrij
     */
    public void setGast(Gast g) {
	gast = g;
    }
    
    /**
     * Levert een textuele representatie van deze <code>Kamer</code> op.
     * @return <code>String</code> die deze <code>Kamer</code> representeert.
     */
    public String toString() {
        return "Kamer " + this.nummer;
    }
}
